package net.comfycastle.musicplayer;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;

/**
 * 현재 재생 중인 노래의 정보를 출력하는 프래그먼트
 * @author ricale
 *
 */
public class PlayInfoFragment extends BaseGeneralFragment {
	///////////
	//////////
	/////////   variable
	
	/** 어플리케이션 객체 */
	MPApp MPA;
	
	/** 노래의 제목을 표시할 텍스트뷰*/
	private TextView mTvTitle;
	/** 앨범 이름을 표시할 텍스트 뷰*/
	private TextView mTvAlbum;
	/** 아티스트 이름을 표시할 텍스트 뷰*/
	private TextView mTvArtist;
	
	///////////
	//////////
	/////////   lifecycle callback method
	
	/**
	 * 프래그먼트가 생성될 때의 콜백 메서드
	 */
	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		MPA = (MPApp)getActivity().getApplication();
	} // end onCreate
	
	/**
	 * 프래그먼트가 액티비티에 붙을 때의 콜백 메서드
	 */
	@Override
	public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
		View view = inflater.inflate(R.layout.playinfo, container, false);
		mTvTitle  = (TextView)view.findViewById(R.id.playinfo_title);
		mTvAlbum  = (TextView)view.findViewById(R.id.playinfo_album);
		mTvArtist = (TextView)view.findViewById(R.id.playinfo_artist);
		return view;
	} // end onCreateView
	
	/**
	 * 프래그먼트가 활성화될 때의 콜백 메서드
	 */
	@Override
	public void onResume() {
		super.onResume();
		IntentFilter filter = new IntentFilter();
		filter.addAction(MPApp.BR_MEDIAPLAYER_PREPARE);
		getActivity().registerReceiver(mMPReadyBr, filter);
	} // end onResume
	
	/**
	 * 프래그먼트가 비활성화될 때의 콜백 메서드
	 */
	@Override
	public void onPause() {
		super.onPause();
		getActivity().unregisterReceiver(mMPReadyBr);
	} // end onPause
	
	///////////
	//////////
	/////////   methods
	
	/**
	 * 각 뷰(위젯)에 재생되는 노래의 정보를 채운다.
	 */
	public void updateMusicInfo() {
		mTvTitle.setText(MusicUtility.getTitle());
		mTvAlbum.setText(MusicUtility.getAlbum());
		mTvArtist.setText(MusicUtility.getArtist());
	} // end showMusicInfo
	
	///////////
	//////////
	/////////   broadcast receiver
	
	/**
	 * 음악 재생 시작이 정상적으로 완료되었을 때 재생된 노래의 정보를 담은 방송을 듣는 리시버
	 */
	BroadcastReceiver mMPReadyBr = new BroadcastReceiver() {
		/**
		 * 음악 재생 시작이 정상적으로 완료되었을 때 재생된 노래의 정보를 담은 방송을 듣는 콜백 메서드
		 */
		public void onReceive(Context context, Intent intent) {
			updateMusicInfo();
		} // end onReceive
	}; // mMPReadyBr
} // end PlayInfoFragment